/**
 * @file bsp_rtc.h
 * @brief RTC封装API
 * @author wangh (wanghuan3037@fiberhome.com)
 * @version 1.0
 * @date 2020-11-12
 * @copyright Copyright (c) 2020  烽火通信
 */
#ifndef __BSP_RTC_H
#define __BSP_RTC_H
#include <stdint.h>
#include "project_config.h"
#if USE_BSP_RTC
/* 使用LSE外部时钟或LSI内部时钟 */
#ifndef RTC_CLOCK_SOURCE_LSI
#define RTC_CLOCK_SOURCE_LSI    1
#endif

#ifndef RTC_CLOCK_SOURCE_LSE
#define RTC_CLOCK_SOURCE_LSE    2
#endif

#ifndef RTC_CLOCK_SOURCE
#define RTC_CLOCK_SOURCE    RTC_CLOCK_SOURCE_LSI
#endif

#ifndef RTC_CAL_WEEK
#define RTC_CAL_WEEK	1
#endif

#ifndef RTC_USE_ZOOM
#define RTC_USE_ZOOM	1
#endif

#if RTC_USE_ZOOM
#define TIME_ZOOM   (8*60*60)   ///< 北京时间的时区秒数差
#else
#define TIME_ZOOM   (0)
#endif

/**
 * @brief RTC时间结构体
 */
typedef struct rtc_time_s
{
    uint8_t tm_sec;
    uint8_t tm_min;
    uint8_t tm_hour;
    uint8_t tm_mday;
    uint8_t tm_mon;
    uint16_t tm_year;
#if RTC_CAL_WEEK
    uint8_t tm_week;
#endif
} rtc_time_t;

/**
 * @brief RTC初始化
 */
void RtcInit( void );

/**
 * @brief RTC设置时间
 * @param[in]  tm           RTC时间结构体
 * @return int8_t 
 * - @b Success : BSP_SUCCESS \n
 * - @b Fail
 * - @ref BSP_ERROR_NO_INIT - RTC没有初始化
 * - @ref BSP_ERROR_INVALID_PARAM - 非法入参
 */
int8_t RtcSet( rtc_time_t *tm );

/**
 * @brief RTC获取时间
 * @param[out] tm           RTC时间结构体
 * @return int8_t 
 * - @b Success : BSP_SUCCESS \n
 * - @b Fail
 * - @ref BSP_ERROR_NO_INIT - RTC没有初始化
 * - @ref BSP_ERROR_INVALID_PARAM - 非法入参
 */
int8_t RtcGet( rtc_time_t *tm );


#endif	/* USE_BSP_RTC */
#endif	 // __BSP_RTC_H 

/*********** (C) COPYRIGHT 2020 FiberHome *****END OF FILE****/
